Modern user interfaces typically have more data that can be displayed on a single screen. Therefore, a user may navigate a user interface by scrolling, swiping, or clicking. Nevertheless, a user interface request is usually submitted to a backend computing system all at once, so that all data requested by a given user interface is prepared and sent to the user interface, regardless of whether it is being viewed by a user, or even if will ever be viewed by the user. This can lead to a bad user experience—for example, data requests of not visible (hidden) part of the user interface may slow down or block requests of the visible part of the user interface. For complex applications, where user interfaces have computation intensive data requests, sometimes including multiple HTTP requests or requests with high bandwidth demand, this approach results in unnecessary overload of the backend computing resources. Furthermore, since backend computing resources handle data requests for data that is not being displayed on a visible part of a user interface, these resources may become unavailable, or underperforming, when a new user interface request is sent to a backend computing system because of a user's scroll or swipe action.
Managing user interface data requests is not easy for a user interface developer. This is because any improvement in backend performance in handling user interface data requests depends on the knowledge of how the user will use the application, what visual output devices will be used, and the characteristics of the backend computing system. Such information is not available to a user interface developer. Currently, there is no viable system for optimizing user interface requests that can be implemented at the user interface development stage.